import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MyListener implements ActionListener {
	private TresEnRaya pantalla;
	private Boton[] lista;
	private Juego jugando;
	private String ganador="";
	private Boton botonInicio;

	public Boton getBotonInicio() {
		return botonInicio;
	}

	public void setBotonInicio(Boton botonInicio) {
		this.botonInicio = botonInicio;
	}

	public MyListener(TresEnRaya pantalla) {
		this.pantalla = pantalla;
	}

	public TresEnRaya getPantalla() {
		return pantalla;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		// Agregar imagen segun el boton
		// Juega humano vs pc
		
		if (Juego.getModoDeJuego() == 1) {
			if (Juego.getModoDeJuego() != 0) {
				Boton boton = (Boton) e.getSource();
				if (boton.isVacio()) {
					boton.setLabel("X");
					boton.sumarNumero();
					pantalla.cambiarTurnoJugador(2);
					
					
					if(this.comprobarFin()){
						pantalla.terminarRonda(botonInicio,lista);
					}
				
					Juego.setTurno(2);
					pantalla.cambiarTurnoJugador("Computadora");
					boolean fin = false;
					boolean entrar = false;

					for (int i = 0; i < lista.length && !fin; i++) {
						if (lista[i].isVacio()) {
							jugando.turnoMaquina(lista);
							boton.sumarNumero();
							fin = true;
						}
					}

					if(this.comprobarFin()){
						pantalla.terminarRonda(botonInicio,lista);
					}
					Juego.setTurno(1);
					pantalla.cambiarTurnoJugador(1);
				}
			}
		}
		// Juega humano vs humano
		else {
			if (Juego.getTurno() == 1) {
				Boton boton = (Boton) e.getSource();
				if (boton.isVacio()) {
					boton.setLabel("X");
					boton.sumarNumero();
					pantalla.cambiarTurnoJugador(2);
					
					if(this.comprobarFin()){
						pantalla.terminarRonda(botonInicio,lista);
					}
					Juego.setTurno(2);
				}
			} else if (Juego.getModoDeJuego() != 0) {
				Boton boton = (Boton) e.getSource();
				if (boton.isVacio()) {
					boton.setLabel("O");
					boton.sumarNumero();
					pantalla.cambiarTurnoJugador(1);

					if(this.comprobarFin()){
						pantalla.terminarRonda(botonInicio,lista);
					}
					Juego.setTurno(1);
				}
			}
		}
	}

	public void setLista(Boton[] arrayBotones) {
		lista = arrayBotones;
	}

	public void setJuego(Juego jugand) {
		jugando = jugand;
	}
	
	public boolean comprobarFin(){
		ganador = jugando.comprobarGanadorJugador(lista);
		if(jugando.isTerminado(lista,ganador)) {
			pantalla.cambiarTurnoJugador(ganador);
			return true;
		}
		return false;
	}

	public void reiniciar(){
		for(int i=0; i < this.lista.length ;i++){
			lista[i].resetear();
		}
		pantalla.comenzarNuevaRonda(lista);
	}
}
